home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_l.lzh / ZMCALL.MAC < prev    next >
Text File  |  1996-10-16  |  29KB  |  959 lines

  1. ZM_INIT:    equ    $00        *イニシャライズ
  2.     *   cmd=$00
  3.     * < d1.l=0    (dummy)
  4.     * > d0.l=Version ID
  5.     *    バージョンIDはたとえばバージョン3.21ならば $00003241となる。
  6.     *    4の部分は固定値。
  7.  
  8. ZM_ASSIGN:    equ    $01        *チャンネルアサイン
  9.     *   cmd=$01
  10.     * < d1.l=ch_number
  11.     * <       .hw=type    (0,1,$8000,$8001,$8002,-1:current)
  12.     * <       .lw=ch    (0-15)
  13.     * < d2.l=trk_number(0-65534)
  14.     * > error code
  15.  
  16. ZM_COMPILER:    equ    $02        *コンパイル(外部組み込み)
  17.     *   cmd=$02
  18.     * < d1.l=mode
  19.     *    d0-d6:検出するエラーの最大/0:∞,1-127
  20.     *    d15:エラーテーブルリストを作成して出力するか(0:no,1:yes)
  21.     * < d2.l=size
  22.     * < a1.l=source address    (a1=d2=0でコンパイラ解除)
  23.     *-------
  24.     * > d0.l=num. of error
  25.     * > a0.l=error table (if required/to be free)
  26.     *    (error code.w,error line.l)
  27.     *-------
  28.     * > d0.l=0:no error
  29.     * > a0.l=object address
  30.     *   0(a0)~15(a0)=ZMD standard header
  31.     *   8(a0)~ZMD
  32.     *   (ウォーニングがあればZMDデータの後ろにくっついている)
  33.     *------- release compiler case
  34.     * > d0.l=0:no error/nz error
  35.  
  36. ZM_VGET:        equ    $03        *音色取りだし
  37.     *   cmd=$03
  38.     * < d1.l=timbre number(0-32767)
  39.     * < d2.l=mode(0:normal,1:AL/FB)
  40.     * < a1.l=destination data address(80bytes)
  41.  
  42. ZM_VSET:        equ    $04        *音色登録
  43.     *   cmd=$04
  44.     * < d1.l=timbre number(0-32767)
  45.     * < d2.l=mode(0:normal,1:AL/FB,-1:ZMD形式)
  46.     * < a1.l=parameters' data address
  47.  
  48. ZM_TEMPO:    equ    $06        *テンポセット
  49.     *   cmd=$06
  50.     * < d1.lw=tempo value(Timer A:77~32767,Timer B:20~5000,YM3802:1~32767
  51.     *              -1:で現在のテンポ取得)
  52.     * < d1.hw=設定モード(-1:でZMUSICのワークに反映しない,0:反映する)
  53.     * > d0.hw=timer value
  54.     * > d0.lw=tempo value
  55.  
  56. ZM_SET_TIMER_VALUE:    equ    $07    *タイマーの値を設定する
  57.     *   cmd=$07
  58.     * < d1.lw=timer value(Timer A:0~1023,Timer B:0~255,YM3802:0~8191)
  59.     *              -1:で現在のタイマ値取得)
  60.     * < d1.hw=設定モード(-1:でZMUSICのワークに反映しない,0:反映する)
  61.     * > d0.hw=tempo value
  62.     * > d0.lw=timer value
  63.  
  64. ZM_PLAY:        equ    $08        *演奏開始
  65.     *    cmd=$08
  66.     * < a1.l=track numbers{tr.w,tr.w,...-1(.w)}
  67.     *    =0 to play all(戻り値無し)
  68.     * > (a0)    設定できなかったトラック番号の並びが返る
  69.     *        -1=end code
  70.     * > a1.l=next addr
  71.  
  72. ZM_PLAY2:        equ    $09        *もう一度共通コマンドから再演奏
  73.     *   cmd=$09
  74.  
  75. ZM_PLAY_AGAIN:        equ    $0a        *前回のm_play()をもう一度やる
  76.     *   cmd=$0a
  77.  
  78. ZM_PLAY_STATUS:        equ    $0b        *演奏状態の検査
  79.     *   cmd=$0b
  80.     * < d1.l=0:check all ch mode
  81.     * < a1.l=result status table address
  82.     *        (a1.l=0とすると戻り値はテーブルで返らずにd0.lに返る)
  83.     * > (a1)={active_device.l,active_device.l,...,-1.l }
  84.     * > d0.l=(a1.l=0のときのみ。0:演奏終了,1:演奏中)
  85.     *
  86.     * < d1.l=1:check all track mode
  87.     * < a1.l=result status table address
  88.     *        (a1.l=0とすると戻り値はテーブルで返らずにd0.lに返る)
  89.     * > (a1)={active_track.w,active_track.w,...,-1.w}
  90.     * > d0.l=(a1.l=0のときのみ。0:演奏終了,1:演奏中)
  91.     *
  92.     * < d1.l=2:channel checking mode
  93.     * < d2.hw=p_type($0000:FM,$0001:ADPCM,$8000~$8002:MIDI1~3)
  94.     * < d2.lw=p_ch(0-15)
  95.     * > d0.b=0 non active
  96.     *     ne    active
  97.     *
  98.     * < d1.l=3:track checking mode
  99.     * < d2.l=track number(0-65534)
  100.     * > d0.b=0 non active
  101.     *     ne    active
  102.  
  103. ZM_STOP:        equ    $0c        *演奏停止
  104.     *   cmd=$0c
  105.     * < a1.l=track numbers{tr.w,tr.w,...-1(.w)}
  106.     * <     =0 to stop all
  107.     * > (a0)    設定できなかったトラック番号の並び
  108.     *        -1=end code
  109.     * > a1.l=next addr
  110.  
  111. ZM_CONT:        equ    $0d        *演奏再開
  112.     *   cmd=$0d
  113.     * < a1.l=track numbers{tr.w,tr.w,...-1(.w)}
  114.     *    =0 to continue all
  115.     * > (a0)    設定できなかったトラック番号の並び
  116.     *        -1=end code
  117.     * > a1.l=next addr
  118.  
  119. ZM_ATOI:        equ    $0e        *トラックデータアドレスを返す
  120.     *   cmd=$0e
  121.     * < d1.l=track number(0-65534)
  122.     * > a0.l=track address(0:track doesn't exist)
  123.  
  124. ZM_SET_MASTER_CLOCK:    equ    $0f        *全音符の絶対音長設定
  125.     *   cmd=$0f
  126.     * < a1.l=0の時は値の問い合わせのみ
  127.     * < d1.l=0:通常音楽演奏用の設定,1:効果音演奏用の設定
  128.     * < $00(a1).w=拍子(上位バイト:分子/下位バイト:分母)
  129.     * < $02(a1).b=メトロノーム速度(音楽的音長)
  130.     * < $03(a1).b=reserve
  131.     * < $04(a1).w=調号(SMFの調号フォーマットに準拠)
  132.     * < $06(a1).w=全音符の絶対音長
  133.     * > a0.l=現在の設定値の格納アドレス
  134.     *     パラメータの格納状況は上記に準ずる。
  135.  
  136. ZM_PLAY_ZMD:    equ    $10        *ZMDの演奏
  137.     *   cmd=$10
  138.     * < d2.l=total data size d2がゼロならバッファへは転送せず即演奏
  139.     *     サイズはヘッダ8バイト分は含んでも含まなくてもいい
  140.     * < a1=play data address
  141.     *  (a1)=data...(header8バイトの次から)
  142.     * > d0.l=error code
  143.  
  144. ZM_PLAY_ZMD_SE:    equ    $11        *ZMDの効果音サイド演奏
  145.     *   cmd=$11
  146.     * < a1=play data address
  147.     *  (a1)=data...(header8バイトの次から)
  148.  
  149. ZM_SE_PLAY:    equ    $12        *効果音モードプレイ
  150.     *   cmd=$12        高速処理が要求されるのでパラメータチェックは無し
  151.     * < a1.l=compiled data address
  152.     *  (a1).w=total of play trks...(トラック・チャンネル情報テーブルから)
  153.  
  154. ZM_SE_ADPCM1:    equ    $13        *ADPCMをSEモードで鳴らす
  155.     *   cmd=$13
  156.     * < a1.l=data address
  157.     * < d1.hwhb=data type(-1:ADPCM,1:16bitPCM,2:8bitPCM)
  158.     * < d1.hwlb=volume(0-127,64が標準)
  159.     * < d1.lwhb=pan(0-3 / $80+0-127)
  160.     * < d1.lwlb=frq(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
  161.     * < d2.l=data size
  162.     * < d4.lw=ch(0-15)
  163.     * < d4.hw=se priority(0-255)
  164.  
  165. ZM_SE_ADPCM2:    equ    $14        *ドライバー内のADPCM DATAをSEモードで鳴らす
  166.     *   cmd=$14        *(エラーチェックはなし)
  167.     * < d1.hwhb=data type(-1:ADPCM,1:16bitPCM,2:8bitPCM)
  168.     * < d1.hwlb=volume(0-127)
  169.     * < d1.lwhb=pan(0-3 / $80+0-127)
  170.     * < d1.lwlb=frq(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
  171.     * < d2.l=PCM data number(d15が1ならば音色番号($8000+0-32767),
  172.     *                  0ならばノート番号(0-32767)指定)
  173.     * < d4.lw=ch(0-15)
  174.     * < d4.hw=se priority(0-255)
  175.  
  176. ZM_INTERCEPT_PLAY:    equ    $15        *演奏開始制御
  177.     *   cmd=$15
  178.     * < d1.l=-1 interception mode
  179.     * < d1.l=0  release interception & play
  180.     * < d1.l=1  release interception
  181.     * > none
  182.  
  183. ZM_CURRENT_MIDI_IN:    equ    $16    *MIDI-INのカレント設定
  184.     *   cmd=$16
  185.     * < d1.w=midi-in port number(0~2,-1:ask)
  186.     * > d0.l=前回の設定
  187.     * - a2保存
  188.  
  189. ZM_CURRENT_MIDI_OUT:    equ    $17    *MIDI-OUTのカレント設定
  190.     *   cmd=$17
  191.     * < d1.w=midi-out port number(0~2,-1:ask)
  192.     * > d0.l=前回の設定
  193.     * - a2.l保存
  194.     * x a0
  195.  
  196. ZM_MIDI_TRANSMISSION:    equ    $18    *MIDI生データの転送
  197.     *   cmd=$18
  198.     * < d1.l:midi-out port number(0-2,-1:current)
  199.     * < d2.l:mode (size)
  200.     *    =0 ASCII mode (end code:$1a)
  201.     *    ≠0 BIN mode (data size)
  202.     * < a1.l=data address
  203.     * > d0.l=sum
  204.     * - all
  205.  
  206. ZM_EXCLUSIVE:    equ    $19        *エクスクルーシブ転送
  207.     *   cmd=$19
  208.     * < a1.l=data address
  209.     * < d1.l=midi-out port number(0-2,-1:current)
  210.     * < d2.l=size
  211.     * < d3.hw=Maker ID
  212.     * < d3.lw=id,model
  213.  
  214. ZM_SET_EOX_WAIT:    equ    $1b    *EOX送信後のウェイト
  215.     *   cmd=$1b
  216.     * < d1.w=wait parameter
  217.     * > d0.w=last parameter
  218.  
  219. ZM_MIDI_INP1:    equ    $1c        *1バイトMIDI入力
  220.     *   cmd=$1c
  221.     * < d1.w=midi-out port number(0-2,-1:current)
  222.     * < d2.l=0 single mode
  223.     * < d2.l<>0 loop mode        *読み出せるまで待ちつづける
  224.     * > d0.b=recieved data
  225.     * > d0.w=minus:dataなし
  226.     * > d0.l=minus:読みこぼしあり
  227.     * > a0.l=前回の読みだしからの経過クロック数
  228.     * - d1
  229.  
  230. ZM_MIDI_OUT1:    equ    $1d        *1バイトMIDI出力
  231.     *   cmd=$1d
  232.     * < d1.w=midi-out port number(0-2,-1:current)
  233.     * < d2.b=midi data
  234.     * > d0.l=error code
  235.  
  236. ZM_MIDI_REC:    equ    $1e        *MIDI生データの録音
  237.     *   cmd=$1e
  238.     * < d1.w=I/F number(0-2,-1:current)
  239.     * > d0.l=error code
  240.  
  241. ZM_MIDI_REC_END:    equ    $1f        *MIDI生データ録音終了&GETステータス
  242.     *   cmd=$1f
  243.     * < d1.w=I/F number (0-2,-1:current)
  244.     * > d0.l=error code
  245.  
  246. ZM_GS_RESET:    equ    $20        *GSの初期化
  247.     *   cmd=$20
  248.     * < d1.w=midi-out port number(0-2,-1:current)
  249.     * < d3.b=gs id number(0-127,-1:current)
  250.     * > d0.l=error code
  251.  
  252. ZM_GS_PARTIAL_RESERVE:    equ    $21        *GSのパーシャルリザーブを設定
  253.     *   cmd=$21
  254.     * < d1.w=midi-out port number(0-2,-1:current)
  255.     * < a1.l=data address
  256.     * < d3.b=gs id number(0-127,-1:current)
  257.     * > d0.l=error code
  258.  
  259. ZM_GS_REVERB:    equ    $22        *GSのリバーブパラメータ設定
  260.     *   cmd=$22
  261.     * < d1.w=midi-out port number(0-2,-1:current)
  262.     * < a1.l=data address
  263.     * < d2.l=size
  264.     * < d3.b=gs id number(0-127,-1:current)
  265.     * > d0.l=error code
  266.  
  267. ZM_GS_CHORUS:    equ    $23        *gsのコーラスパラメータ設定
  268.     *   cmd=$23
  269.     * < d1.w=midi-out port number(0-2,-1:current)
  270.     * < a1.l=data address
  271.     * < d2.l=size
  272.     * < d3.b=gs id number(0-127,-1:current)
  273.     * > d0.l=error code
  274.  
  275. ZM_GS_PART_PARAMETER:    equ    $24    *gsのパートパラメータ設定
  276. ZM_GS_PART_SETUP:    equ    $24    *gsのパートパラメータ設定
  277.     *   cmd=$24
  278.     * < a1.l=data address
  279.     * < d1.w=midi-out port number(0-2,-1:current)
  280.     * < d2.l=size(1~119)
  281.     * < d3.hw=gs part number
  282.     * < d3.lw=gs id number(0-127,-1:current)
  283.     * > d0.l=error code
  284.  
  285. ZM_GS_DRUM_PARAMETER:    equ    $25    *SC55のドラムパラメータ設定    !v3
  286. ZM_GS_DRUM_SETUP:    equ    $25    *SC55のドラムパラメータ設定    !v3
  287.     *   cmd=$25
  288.     * < a1.l=data address
  289.     * < d1.w=midi-out port number(0-2,-1:current)
  290.     * < d2.l=size
  291.     * < d3.hw=gs map number*256+note number
  292.     * < d3.lw=gs id number(0-127,-1:current)
  293.     * > d0.l=error code
  294.  
  295. ZM_GS_DRUM_NAME:    equ    $26    *SC55のドラムネーム設定    !v3
  296.     *   cmd=$26
  297.     * < a1.l=data address
  298.     * < d1.w=midi-out port number(0-2,-1:current)
  299.     * < d2.l=size
  300.     * < d3.hw=gs drum map number(0,1:PRESET/$80+0,1:USER)
  301.     * < d3.lw=gs id number(0-127,-1:current)
  302.     * > d0.l=error code
  303.  
  304. ZM_GS_PRINT:    equ    $27        *SC55の画面へメッセージ出力
  305.     *   cmd=$27
  306.     * < a1.l=data address
  307.     * < d1.w=midi-out port number(0-2,-1:current)
  308.     * < d2.l=size
  309.     * < d3.b=gs id number(0-127,-1:current)
  310.     * > d0.l=error code
  311.  
  312. ZM_GS_DISPLAY:    equ    $28        *SC55の画面にドットパターンを表示する
  313.     *   cmd=$28
  314.     * < a1.l=data address
  315.     * < d1.w=midi-out port number(0-2,-1:current)
  316.     * < d3.b=gs id number(0-127,-1:current)
  317.     * > d0.l=error code
  318.  
  319. ZM_GM_SYSTEM_ON:    equ    $29        *GMシステム・オン
  320.     *   cmd=$29
  321.     * < d1.w=midi-out port number(0-2,-1:current)
  322.     * > d0.l=error code
  323.  
  324. ZM_MT32_RESET:    equ    $30        *MT32の初期化
  325.     *   cmd=$30
  326.     * < d1.w=midi-out port number(0-2,-1:current)
  327.     * < d3.b=mt32 id number(0-127,-1:current)
  328.     * > d0.l=error code
  329.  
  330. ZM_MT32_PARTIAL_RESERVE:    equ    $31        *MT32のパーシャルリザーブを設定
  331.     *   cmd=$31
  332.     * < a1.l=data address
  333.     * < d1.w=midi-out port number(0-2,-1:current)
  334.     * < d3.b=mt32 id number(0-127,-1:current)
  335.     * > d0.l=error code
  336.  
  337. ZM_MT32_REVERB:    equ    $32        *MT32のリバーブパラメータ設定
  338.     *   cmd=$32
  339.     * < a1.l=data address
  340.     * < d1.w=midi-out port number(0-2,-1:current)
  341.     * < d2.l=size
  342.     * < d3.b=mt32 id number(0-127,-1:current)
  343.     * > d0.l=error code
  344.  
  345. ZM_MT32_PART_SETUP:    equ    $33        *MT32のパートパラメータ設定
  346.     *   cmd=$33
  347.     * < a1.l=data address
  348.     * < d1.w=midi-out port number(0-2,-1:current)
  349.     * < d2.l=size
  350.     * < d3.b=mt32 id number(0-127,-1:current)
  351.     * > d0.l=error code
  352.  
  353. ZM_MT32_DRUM:    equ    $34        *MT32のドラムパラメータ設定
  354.     *   cmd=$34
  355.     * < a1.l=data address
  356.     * < d1.w=midi-out port number(0-2,-1:current)
  357.     * < d2.l=size
  358.     * < d3.hw=tone no
  359.     * < d3.lw=mt32 id number(0-127,-1:current)
  360.     * > d0.l=error code
  361.  
  362. ZM_MT32_COMMON:    equ    $35        *MT32の音色コモンパラメータ設定
  363.     *   cmd=$35
  364.     * < a1.l=data address
  365.     * < d1.w=midi-out port number(0-2,-1:current)
  366.     * < d2.l=size
  367.     * < d3.hw=program number(1-64)
  368.     * < d3.lw=mt32 id number(0-127,-1:current)
  369.     * > d0.l=error code
  370.  
  371. ZM_MT32_PARTIAL:    equ    $36        *MT32の音色パーシャルパラメータ設定
  372.     *   cmd=$36
  373.     * < a1.l=data address
  374.     * < d1.w=midi-out port number(0-2,-1:current)
  375.     * < d2.l=size
  376.     * < d3.hw=program number(1-64)*256+partial number(1-4)
  377.     * < d3.lw=mt32 id number(0-127,-1:current)
  378.     * > d0.l=error code
  379.  
  380. ZM_MT32_PATCH:    equ    $37        *MT32の音色パッチパラメータ設定
  381.     *   cmd=$37
  382.     * < a1.l=data address
  383.     * < d1.w=midi-out port number(0-2,-1:current)
  384.     * < d2.l=size
  385.     * < d3.hw=patch number(1-128)
  386.     * < d3.lw=mt32 id number(0-127,-1:current)
  387.     * > d0.l=error code
  388.  
  389. ZM_MT32_PRINT:    equ    $38        *MT32の画面へメッセージ出力
  390.     *   cmd=$38
  391.     * < a1.l=data address
  392.     * < d1.w=midi-out port number(0-2,-1:current)
  393.     * < d2.l=size
  394.     * < d3.b=mt32 id number(0-127,-1:current)
  395.     * > d0.l=error code
  396.  
  397. ZM_U220_SETUP:    equ    $39        *U220のセットアップパラメータ設定
  398.     *   cmd=$39
  399.     * < a1.l=data address
  400.     * < d1.w=midi-out port number(0-2,-1:current)
  401.     * < d3.b=u220 id number(0-127,-1:current)
  402.     * > d0.l=error code
  403.  
  404. ZM_U220_PART_SETUP:    equ    $3a    *U220のテンポラリーパッチの(PART)パラメータ設定
  405.     *   cmd=$3a
  406.     * < a1.l=data address
  407.     * < d1.w=midi-out port number(0-2,-1:current)
  408.     * < d3.hw=part number(1~6)
  409.     * < d3.lw=u220 id number(0-127,-1:current)
  410.     * > d0.l=error code
  411.  
  412. ZM_U220_COMMON:    equ    $3b        *U220のテンポラリーパッチのコモンパラメータ設定
  413.     *   cmd=$3b
  414.     * < a1.l=data address
  415.     * < d1.w=midi-out port number(0-2,-1:current)
  416.     * < d3.b=u220 id number(0-127,-1:current)
  417.     * > d0.l=error code
  418.  
  419. ZM_U220_TIMBRE:    equ    $3c        *U220の音色パラメータ設定
  420.     *   cmd=$3c
  421.     * < a1.l=data address
  422.     * < d1.w=midi-out port number(0-2,-1:current)
  423.     * < d3.hw=program number(1-128)
  424.     * < d3.lw=u220 id number(0-127,-1:current)
  425.     * > d0.l=error code
  426.  
  427. ZM_U220_DRUM_SETUP:    equ    $3d    *U220のテンポラリーパッチの(DRUM)パラメータ設定
  428.     *   cmd=$3d
  429.     * < a1.l=data address
  430.     * < d1.w=midi-out port number(0-2,-1:current)
  431.     * < d3.b=u220 id number(0-127,-1:current)
  432.     * > d0.l=error code
  433.  
  434. ZM_U220_DRUM_INST:        equ    $3e    *U220のテンポラリエリアのドラムの音色を変更する
  435.     *   cmd=$3e
  436.     * < a1.l=data address
  437.     * < d1.w=midi-out port number(0-2,-1:current)
  438.     * < d3.hw=patch number(35~99)
  439.     * < d3.lw=u220 id number(0-127,-1:current)
  440.     * > d0.l=error code
  441.  
  442. ZM_U220_PRINT:    equ    $3f        *U220の画面へメッセージ出力
  443.     *   cmd=$3f
  444.     * < a1.l=data address
  445.     * < d1.w=midi-out port number(0-2,-1:current)
  446.     * < d2.l=size
  447.     * < d3.b=u220 id number(0-127,-1:current)
  448.     * > d0.l=error code
  449.  
  450. ZM_M1_SETUP:    equ    $40        *M1の受信MIDI CHの設定
  451.     *   cmd=$40
  452.     * < a1.l=data address
  453.     * > d0.l=error code
  454.  
  455. ZM_M1_PART_SETUP:    equ    $41        *M1のSEQ SONG0の設定
  456.     *   cmd=$41
  457.     * < a1.l=data address
  458.     * > d0.l=error code
  459.  
  460. ZM_M1_EFFECT_SETUP:    equ    $42        *M1のSEQ SONG0のEFFECTの設定
  461.     *   cmd=$42
  462.     * < a1.l=data address
  463.     * > d0.l=error code
  464.  
  465. ZM_M1_PRINT:    equ    $43        *M1のSEQ SONG0のNAME設定
  466.     *   cmd=$43
  467.     * < a1.l=data address
  468.     * < d2.l=size
  469.     * > d0.l=error code
  470.  
  471. ZM_SEND_TO_M1:    equ    $44        *M1へパラメータを書き込む
  472.     *   cmd=$44
  473.     * < d1.w=midi-out port number(0-2,-1:current)
  474.     * < d3.b=m1 id number(0-127,-1:current)
  475.     * > d0.l=error code
  476.  
  477. ZM_SC88_MODE_SET:    equ    $46        *SC88のモードセット
  478.     *   cmd=$46
  479.     * < d1.w=midi-out port number(0-2,-1:current)
  480.     * < d3.hw=sc88 mode (0:single or 1:double)
  481.     * < d3.lw=sc88 id number(0-127,-1:current)
  482.     * > d0.l=error code
  483.  
  484. ZM_SC88_REVERB:        equ    $47        *SC88のリバーブパラメータ設定
  485.     *   cmd=$47
  486.     * < d1.w=midi-out port number(0-2,-1:current)
  487.     * < a1.l=data address
  488.     * < d2.l=size
  489.     * < d3.b=sc88 id number(0-127,-1:current)
  490.     * > d0.l=error code
  491.  
  492. ZM_SC88_CHORUS:        equ    $48        *SC88のコーラスパラメータ設定
  493.     *   cmd=$48
  494.     * < d1.w=midi-out port number(0-2,-1:current)
  495.     * < a1.l=data address
  496.     * < d2.l=size
  497.     * < d3.b=SC88 id number(0-127,-1:current)
  498.     * > d0.l=error code
  499.  
  500. ZM_SC88_DELAY:        equ    $49        *SC88のディレイパラメータ設定
  501.     *   cmd=$49
  502.     * < d1.w=midi-out port number(0-2,-1:current)
  503.     * < a1.l=data address
  504.     * < d2.l=size
  505.     * < d3.b=SC88 id number(0-127,-1:current)
  506.     * > d0.l=error code
  507.  
  508. ZM_SC88_EQUALIZER:    equ    $4a        *SC88のイコライザ・パラメータ設定
  509.     *   cmd=$4a
  510.     * < d1.w=midi-out port number(0-2,-1:current)
  511.     * < a1.l=data address
  512.     * < d2.l=size
  513.     * < d3.b=SC88 id number(0-127,-1:current)
  514.     * > d0.l=error code
  515.  
  516. ZM_SC88_PART_SETUP:    equ    $4b        *SC88のパートパラメータ設定
  517. ZM_SC88_PART_PARAMETER:    equ    $4b        *SC88のパートパラメータ設定
  518.     *   cmd=$4b
  519.     * < a1.l=data address
  520.     * < d1.w=midi-out port number(0-2,-1:current)
  521.     * < d2.l=size(1~119)
  522.     * < d3.hw=sc88 part number(1-16)
  523.     * < d3.lw=sc88 id number(0-127,-1:current)
  524.     * > d0.l=error code
  525.  
  526. ZM_SC88_DRUM_SETUP:    equ    $4c        *SC88のドラムパラメータ設定    !v3
  527. ZM_SC88_DRUM_PARAMETER:    equ    $4c        *SC88のドラムパラメータ設定    !v3
  528.     *   cmd=$4c
  529.     * < a1.l=data address
  530.     * < d1.w=midi-out port number(0-2,-1:current)
  531.     * < d2.l=size
  532.     * < d3.hw=sc88 map number*256+note number
  533.     * < d3.lw=sc88 id number(0-127,-1:current)
  534.     * > d0.l=error code
  535.  
  536. ZM_SC88_DRUM_NAME:    equ    $4d    *SC55のドラムネーム設定    !v3
  537.     *   cmd=$4d
  538.     * < a1.l=data address
  539.     * < d1.w=midi-out port number(0-2,-1:current)
  540.     * < d2.l=size
  541.     * < d3.hw=sc88 drum map number(0,1:PRESET/$80+0,1:USER)
  542.     * < d3.lw=sc88 id number(0-127,-1:current)
  543.     * > d0.l=error code
  544.  
  545. ZM_SC88_USER_INST:    equ    $4e        *SC88のユーザー音色パラメータ設定
  546.     *   cmd=$4e
  547.     * < a1.l=data address
  548.     * < d1.w=midi-out port number(0-2,-1:current)
  549.     * < d2.l=size
  550.     * < d3.hw=sc88 bank number*256+program number
  551.     * < d3.lw=sc88 id number(0-127,-1:current)
  552.     * > d0.l=error code
  553.  
  554. ZM_SC88_USER_DRUM:    equ    $4f        *SC88のユーザードラムセット・パラメータ設定
  555.     *   cmd=$4f
  556.     * < a1.l=data address
  557.     * < d1.w=midi-out port number(0-2,-1:current)
  558.     * < d2.l=size
  559.     * < d3.hw=sc88 set number*256+note number
  560.     * < d3.lw=sc88 id number(0-127,-1:current)
  561.     * > d0.l=error code
  562.  
  563. ZM_PCM_READ:    equ    $50        *ADPCMファイルを読み込む
  564.     *   cmd=$50
  565.     * < (a1)=TONE NAME(最大32bytes),FILENAME(?bytes),0
  566.     *   or
  567.     *   (a1)=TONE NAME(最大32bytes),source data number.l
  568.     * < d1.lw=note number(0~),timbre number($8000+0~)
  569.     * < d1.hw=flag of option existance(plus=なし,minus=あり)
  570.     * < d2.hwhb=登録次元 (-1=ADPCM 1=16bitPCM 0=V2互換)
  571.     * < d2.hwlb=オリジナルキー(0-127)
  572.     *
  573.     * < a1.l=0のときはd1.wで表されるTIMBRE/TONEを消去する
  574.     *
  575.     * > a0.l=next(end) of cmd address
  576.  
  577. ZM_REGISTER_ZPD:    equ    $51        *ADPCMブロックデータの取り込み
  578.     *   cmd=$51
  579.     * < a1.l=filename address
  580.     * > d0.l=error code
  581.     * > work:header_bufferにファイルのヘッダ情報が格納されている
  582.  
  583. ZM_SET_ZPD_TABLE:    equ    $52        *ZPDデータのテーブルセット    !v3
  584.     *   cmd=$52
  585.     * < d1.l=version type(0:V1~2,1:V3,2:PDX)
  586.     * < a1.l=data address (ヘッダの次から)
  587.     * > d0.l=error code
  588.  
  589. ZM_CONVERT_PCM:        equ    $53
  590.     *   cmd=$53
  591.     * < d1.l=mode(0:adpcm to pcm,1:pcm to adpcm)
  592.     * < d2.l=size(変換元のデータサイズ)
  593.     * < a1.l=src data address
  594.     * < a2.l=dest data address
  595.     * > none
  596.  
  597. ZM_EXEC_SUBFILE:    equ    $54        *サブファイルの読み込み
  598.     *   cmd=$54
  599.     * < a1=filename文字列(endcode=0)
  600.     * > d0.l=error code
  601.  
  602. ZM_TRANSMIT_MIDI_DUMP:    equ    $55        *MIDIダンプの転送
  603.     *   cmd=$55
  604.     * < d1.w=midi port number(0~2),-1はカレント
  605.     * < a1.l=filename文字列(endcode=0)
  606.     * > d0.l=error code
  607.  
  608. ZM_SET_WAVE_FORM1:    equ    $56        *波形メモリ登録
  609.     *   cmd=$56                *v3済み
  610.     * < a1.l=data address
  611.     * < d1.w=wave number
  612.     * < 0(a1).l=data size
  613.     * < 4(a1).b=loop type
  614.     * < 5(a1).l=loop start offset
  615.     * < 9(a1).l=loop end offset
  616.     * < 13(a1).l=loop time(0=∞)
  617.     * < 17(a1).l reserved area
  618.     * < 21(a1).b name len 
  619.     * < 22(a1)~ name
  620.     * < 22+name len(a1)~ data(ただし偶数アドレスから始まっている)
  621.     * > d0.l=0 no error
  622.  
  623. ZM_SET_WAVE_FORM2:    equ    $57        *波形メモリ登録(その2)
  624.     *   cmd=$57                *v3済み
  625.     * < a1.l=data address
  626.     * < d1.w=wave number
  627.     * < 0(a1).l=data size
  628.     * < 4(a1).b=loop type
  629.     * < 5(a1).l=loop start offset
  630.     * < 9(a1).l=loop end offset
  631.     * < 13(a1).l=loop time(0=∞)
  632.     * < 17(a1).l reserved area
  633.     * < 21(a1).b name len 
  634.     * < 22(a1)~ name
  635.     * < 22+name len(a1)~ data(ただし偶数アドレスから始まっている)
  636.     * > d0.l=0 no error
  637.     * > a0.l next addr
  638.  
  639. ZM_OBTAIN_EVENTS:    equ    $58        *各種イベントの取得
  640.     *   cmd=$58
  641.     * < a1.l=destination address table
  642.     * < d1.w=omit flag (d0:m_play,d1:m_stop,d2:m_cont...
  643.     *            bit:1=do parameter set    bit:0=omit parameter setting)
  644.     *   00(a1).l    0:m_play(0:off)
  645.     *   04(a1).l    1:m_stop(0:off)
  646.     *   08(a1).l    2:m_cont(0:off)
  647.     *   0c(a1).l    3:Jump after if performance comes to an end.(0:off)
  648.     *   10(a1).l    4:Loop time value(0:off/1-256)上位16ビットは0に初期化しておくこと
  649.     *   14(a1).l    5:Jump after n times loop
  650.     *   18(a1).l    6:Clock value(0:off)
  651.     *   1c(a1).l    7:Jump after n clocks
  652.     * > a0.l=イベントテーブルアドレス
  653.     *
  654.     * < a1.l=-1 ask mode
  655.     * > a0.l=イベントテーブルアドレス
  656.  
  657. ZM_LOOP_CONTROL:    equ    $59    *演奏トラック全体のループ制御を行う
  658.     *   cmd=$59
  659.     * < d1.l=control mode(-1:ask loop time,0:normal loop mode,1:ignore loop)
  660.     * > d0.l=loop time(-1:error)
  661.  
  662. ZM_MASK_TRACKS:    equ    $5a        *トラックマスク
  663.     *   cmd=$5a
  664.     * < a1.l=parameter table
  665.     * <      param. sequence
  666.     *        {track number(.w),mask mode(.w),...,-1.w}
  667.     *        track number:(0-65534)(.w)
  668.     *        mask mode 0.w:enable
  669.     *              1.w:reverse
  670.     *             -1.w:disable
  671.     *            end code:-1.w
  672.     * < a1.l=0        all tracks
  673.     * < d1.w=0        enable
  674.     * < d1.w=+1        reverse
  675.     * < d1.w=-1        mask
  676.     *
  677.     * < a1.l=1        SOLO mode
  678.     * < d1.w=0-65534    track numbers
  679.     *
  680.     * > (a0)        設定できなかったトラック番号の並び
  681.     *            -1=end code
  682.     * > next addr(case:< a1.l<>0)
  683.  
  684. ZM_MASK_CHANNELS:    equ    $5b        *チャンネルマスク
  685.     *   cmd=$5b
  686.     * < a1.l=parameter table
  687.     * <     param. sequence
  688.     *        {device type(.w),ch number(.w),mask mode(.w)...,-1(.l)}
  689.     *        device type:0,1,$8000-$8002
  690.     *        ch number  :0-15
  691.     *        mask mode     0.w:enable
  692.     *                -1.w:disable
  693.     *        endcode=-1.l
  694.     * < a1.l=0    all ch
  695.     * < d1.w=0    enable
  696.     * < d1.w=+1    reverse
  697.     * < d1.w=-1    mask
  698.     *
  699.     * < a1.l=1    SOLO mode
  700.     * < d1.l    type,ch
  701.     *
  702.     * > (a0)    設定できなかったチャンネル番号の並び
  703.     *        -1.l=end code
  704.  
  705. ZM_SET_CH_OUTPUT_LEVEL:    equ    $5c    *各チャンネルの出力レベルの設定
  706.     *   cmd=$5c
  707.     * < a1.l=parameter table
  708.     * <     param. sequence
  709.     *        {device type(.w),ch number(.w),omt(b),speed(.w),start(.b),end(.b)}
  710.     *        device type:0,1,$8000~$8002,-1:all
  711.     *        ch number:0-15
  712.     *        omt:d0=speed,d1=start,d2=end
  713.     *        fader speed:0-65535
  714.     *        start level:0-128
  715.     *        end level:0-128
  716.     * > d0         0:ok
  717.     *        -1:error
  718.  
  719. ZM_SET_TR_OUTPUT_LEVEL:    equ    $5d        *各トラックの出力レベルの設定
  720.     *   cmd=$5d
  721.     * < a1.l=parameter table
  722.     * <     sequence of {tr number(.w),omt(b),speed(.w),start(.b),end(.b)}
  723.     *        tr number.w:0-65534,65535:all
  724.     *        omt:d0=speed,d1=start,d2=end
  725.     *        fader speed:0-65535
  726.     *        start level:0-128
  727.     *        end level:0-128
  728.     * > d0         0:ok
  729.     *        -1:error
  730.  
  731. ZM_MASTER_FADER:    equ    $5e        *フェードアウト/イン処理
  732.     *   cmd=$5e
  733.     * < a1.l=parameter list address
  734.     *    { device-code.w:0/1/$8000~$8002/-1,
  735.     *      omt.b:%000~%111
  736.     *      speed.w:0-65535
  737.     *      start-level.b:0-128, end-level.b:0-128}
  738.     * > d0    =0:ok
  739.     *    -1:error
  740.  
  741. ZM_GET_FADER_STATUS:    equ    $5f        *フェーダーの状態を得る
  742.     *   cmd=$5f
  743.     * > d0.l d0:実行中のチャンネルフェーダーすべてが目的に達している(1:達成した 0:達成していない)
  744.     *     d1:実行中のマスターフェーダーすべてが目的に達している(1:達成した 0:達成していない)
  745.     *     d6:チャンネルフェーダーの状態(1:実行中 0:実行されていない)
  746.     *     d7:マスターフェーダーの状態(1:実行中 0:実行されていない)
  747.  
  748. ZM_GET_PLAY_TIME:    equ    $60    *演奏時間の取得
  749.     *   cmd=$60
  750.     * > d0.l=00HH:MM:SS
  751.     *HH:0-99 MM:0-59 SS:0-59
  752.  
  753. ZM_GET_1ST_COMMENT:    equ    $61    *最初のコメントを取り出す
  754.     *   cmd=$61
  755.     * > a0.l=comment_address
  756.  
  757. ZM_GET_TIMER_MODE:    equ    $62        *どのタイマーを使用しているか
  758.     *   cmd=$62
  759.     * > d0.l=timer type(0:Timer A  1:Timer B  2:YM3802 timer)
  760.  
  761. ZM_GET_TRACK_TABLE:    equ    $63        *演奏トラックリストのアドレスを得る
  762.     *   cmd=$63
  763.     * > a0.l=play_trk_tbl
  764.     * > d0.l=play_trk_tbl_se
  765.  
  766. ZM_GET_PLAY_WORK:    equ    $64        *演奏ワークアドレスを返す
  767.     *   cmd=$64
  768.     * < d1.l=trk number(0-65534)
  769.     * > a0=trk n seq_wk_tbl
  770.     * > d0=trk n seq_wk_tbl_se
  771.  
  772. ZM_GET_BUFFER_INFORMATION:    equ    $65        *各バッファのインフォメーション
  773.     *   cmd=$65
  774.     * > a0.l=buffer head address
  775.  
  776. ZM_GET_ZMSC_STATUS:    equ    $66            *ZMUSICのワーク状況
  777.     *   cmd=$66
  778.     * > a0.l=status work address
  779.  
  780. ZM_CALC_TOTAL:    equ    $67        *各トラックのステップタイムの合計を求める(外部組み込み)
  781.     *   cmd=$67
  782.     * < a1.l=ZMD address    (ヘッダはなくても有ってもいい
  783.     *             ヘッダがある場合はバージョンチェックをする)
  784.     *    =0ならばa0.l=zmlentblを返す
  785.     * > d0.l=0:no error
  786.     * > a0.l=結果格納アドレス(使用後開放すること)(ZCLABEL.MAC参照)
  787.     * > d0.l=n of error
  788.     * > a0.l=error table(使用後開放すること)
  789.  
  790. ZM_APPLICATION_RELEASER:    equ    $68    *サポートプログラムの解除
  791.     *   cmd=$68
  792.     * < a1.l=release routine address(0:cancel)
  793.     * < d1.l=result code(キャンセル時に使用)
  794.     * > d0.l=result code
  795.     * > a0.l=0:error/nz:no error
  796.     * 1)    a1.lから始まる各解放ルーチンは必要処理を実行後、最後に
  797.     *    ZMUSIC側で解放してほしいメモリブロックがあるならば
  798.     *    そのアドレスをa0.lにかえすようにすること。
  799.     *    なければa0.l=0を返すこと
  800.     * 2)    a1.lからの解放ルーチン実行後に、なにか表示したいメッセージが
  801.     *    有る場合はその文字列のアドレスをa1.lに返すようにすること。
  802.     *    なければa1.l=0を返すこと
  803.     * 3)    a1.lからの解放ルーチンでエラーが発生した場合は戻り値として
  804.     *    d0.l(0:no error,1:occupied,-1:error)を返すことが出来る。
  805.     *    エラーが発生した場合もその旨を告げるメッセージ文字列をa1.lに
  806.     *    与えることが出来る。
  807.  
  808. ZM_RELEASE_DRIVER:    equ    $69        *ZMUSICの解除
  809.     *   cmd=$69
  810.     * > d0.l=error code(0:release completed)
  811.     * > a0.l=driver address(to be free)
  812.  
  813. ZM_OCCUPY_ZMUSIC:        equ    $6a    *ZMUSICドライバの占有
  814.     *   cmd=$6a
  815.     * < d1.l=1    lock ZMUSIC
  816.     * < d1.l=0    unlock ZMUSIC
  817.     * < d1.l=-1    ask status
  818.     * > d0.l    case:d1.l=1,0    d0:以前の占有状態(d1.l=-1のケース参照)
  819.     * > d0.l    case:d1.l=-1    d0=0:free,    d0.l=1:occupied
  820.  
  821. ZM_HOOK_FNC_SERVICE:    equ    $6b    *ファンクションコールのフック
  822.     *   cmd=$6b
  823.     * < d1.l=function number
  824.     * < a1.l=new user's job address(-1:ask mode)
  825.     * > a0.l=original job address
  826.  
  827. ZM_HOOK_ZMD_SERVICE:    equ    $6c    *ZMD(演奏データ/共通コマンド)オペレーションフック
  828.     *   cmd=$6c
  829.     * < d1.lw=ZMD code
  830.     * < d1.hw=device(0:FM,1:ADPCM,2:MIDI,
  831.     *        -1:COMMON ZMD,-2:COMMON ZMD of SE side,
  832.     *        -3:CONTROL ZMD)
  833.     * < a1.l=new user's job address(-1:ask mode)
  834.     * > d0.l=0:no error
  835.     * > a0.l=original job address
  836.  
  837. ZM_OCCUPY_COMPILER:    equ    $6d    *ZMUSICコンパイラの占有(外部組み込み)
  838.     *   cmd=$6d
  839.     * < d1.l=1    lock Compiler
  840.     * < d1.l=0    unlock Compiler
  841.     * < d1.l=-1    ask status
  842.     * > d0.l    case:d1.l=1,0    d0:以前の占有状態(d1.l=-1のケース参照)
  843.     * > d0.l    case:d1.l=-1    d0=0:free,    d0.l=1:occupied
  844.  
  845. ZM_STORE_ERROR:        equ    $6e    *エラーキューに値を設定
  846.     *   cmd=$6e
  847.     * < d1.l=error code(-1のときは問い合わせのみ)
  848.     *    (エラーの発生したファンクション番号(0-32767)*65536+エラーの種類(0-65535))
  849.     * < d2.l=n_of_errに幾つ加算するか
  850.     * > a0.l=エラーストックバッファのアドレス
  851.     * > d0.l=現在ストックしているエラー情報の個数
  852.  
  853. ZM_PRINT_ERROR:    equ    $6f        *エラーの表示/出力
  854.     *   cmd=$6f
  855.     * < d1.hw=output mode(0:screen,1:buffer)    (Be used in ZMSC0)
  856.     * < d1.lw=language mode(0:English,1:Japanese)
  857.     * < d2.l=num. of err/warn
  858.     * < a1.l=ZMD filename(ない場合は0)
  859.     * < a2.l=source address(ない場合は0)
  860.     * < a3.l=source filename(ない場合は0)
  861.     * < a5.l=error table addr.
  862.     * > a0.l=出力バッファ(endcod=0)(if d1.l==1)    (Be used in ZMSC0)
  863.     * > d0.l=出力バッファサイズ(endcode含まず)
  864.     * - all
  865.  
  866. ZM_GET_MEM:    equ    $70        *メモリの確保
  867.     *   cmd=$70
  868.     * < d2.l=memory size
  869.     * < d3.l=employment
  870.     * > d0.l=memory block address (or error code/ depends on _S_MALLOC)
  871.     * > d2.l=long word border size
  872.     * > a0.l=data address
  873.     * - all
  874.  
  875. ZM_ENLARGE_MEM:    equ    $71        *メモリブロックの拡大縮小
  876.     *   cmd=$71
  877.     * < d2.l=new memory size
  878.     * < a1.l=now address
  879.     * > d0.l=address (0:done it, error/ depends on _S_MALLOC)
  880.     * > d2.l=long word border size
  881.     * > a0.l=address
  882.     * - all
  883.  
  884. ZM_FREE_MEM:    equ    $72        *メモリブロックの解放
  885.     *   cmd=$72
  886.     * < a1.l=data address
  887.     * > d0.l=0 no error
  888.     * - a1
  889.  
  890. ZM_FREE_MEM2:    equ    $73    *メモリブロックの解放 その2(使用用途識別開放)
  891.     *   cmd=$73
  892.     * < d3.l=employment ID(0:ALL)
  893.     * > d0.l:0 no error, ne:error
  894.     * - all
  895.  
  896. ZM_EXCHANGE_MEMID:    equ    $74    *メモリブロックのIDの変更
  897.     *   cmd=$74
  898.     * < a1.l=mem.block address
  899.     * < d1.l=mode    (0:no check) (1:check mode) (-1:exchange all who got d2 id.) 
  900.     * < d2.l=old ID (Can be omitted in 'no check' case.)
  901.     * < d3.l=New ID ($8000_0000 means lock mem.)($0000_0000 means unlock mem.)
  902.     * > d0.l=return (0:no error, ne:error)
  903.     * - all except d0,a0
  904.  
  905. ZM_INIT_ALL:    equ    $78        *ZMUSICの初期化
  906.     *   cmd=$78
  907.     * > d0.l=Version ID
  908.     *    バージョンIDはたとえばバージョン3.21ならば $00003241となる。
  909.     *    4の部分は固定値。
  910.  
  911. ZM_INT_START:    equ    $79        *割り込みの開始制御
  912.     *   cmd=$79
  913.     * < d1.w=-1    音楽タイマ 
  914.     * < d1.w=0    音楽/効果音タイマ 
  915.     * < d1.w=1    効果音タイマ 
  916.  
  917. ZM_INT_STOP:    equ    $7a        *割り込みの停止制御
  918.     *   cmd=$7a
  919.     * < d1.w=-1    音楽タイマ 
  920.     * < d1.w=0    音楽/効果音タイマ 
  921.     * < d1.w=1    効果音タイマ 
  922.  
  923. ZM_SET_INT_SERVICE:    equ    $7b    *ユーザ割り込みサービスの設定
  924.     *   cmd=$7b
  925.     *設定時
  926.     *     < d1.hw=全音符のクロック数
  927.     *     < d1.lw=音楽テンポ
  928.     *     < a1.l=ユーザー割り込みエントリ
  929.     *    > d0.l=0:done    d0.l=-1:先約有り,a0.l=ルーチンエントリアドレス
  930.     *テンポの変更
  931.     *     < d1.hw=全音符のクロック数
  932.     *     < d1.lw=音楽テンポ
  933.     *    < a1.l=-1
  934.     *    > d0.l=0:正常終了    d0.l=-1:失敗
  935.     *検査時
  936.     *     < d1.l=-1
  937.     *    < a1.l=0
  938.     *    > d0.l=0:空き,a0.l=0    d0.l=-1:先約有り,a0.l=ルーチンエントリアドレス
  939.     *解除時
  940.     *     < d1.l=0
  941.     *     < a1.l=ユーザー割り込みエントリ
  942.     *     > d0.l=0:done    d0.l=-1:解除不可能
  943.     * x d0-d2/a0-a1
  944.  
  945. ZM_CONTROL_TEMPO:    equ    $7c    *テンポ設定の主導権設定
  946.     *   cmd=$7c
  947.     * < d1.l=-1    テンポ設定の主導権を外部アプリケーションに委託
  948.     * < d1.l=0    テンポ設定主導権を奪還(内部パラメタでテンポ初期化も行う)
  949.  
  950. ZM_ZMUSIC_MODE:        equ    $7e    *ZMUSICモード切り換え
  951.     *   cmd=$7e
  952.     * < d1.l=mode(2:Ver.2.0 mode,Ver.3.0 mode)
  953.  
  954. ZM_EXEC_ZMD:    equ    $7f    *ZMD列の実行
  955.     *   cmd=$7f
  956.     * < d1.l=トラック番号(0-65534,65535:特に指定しない場合)
  957.     * < d2.l=ZMD列の長さ(1~)
  958.     * < a1.l=ZMD列格納アドレス(バッファ自体はd2.l+8の大きさを必要とする)
  959.